package CutLoad.cookies
{
	
	import CutLoad.Base;
	import CutLoad.CutLoad;
	
	import flash.display.DisplayObject;
	import flash.display.Loader;
	import flash.display.MovieClip;
	import flash.display.Sprite;

	/**
	 * 加载swf管理器
	 * @author smallerbird mail:smallerbird@gmail.com  site:www.mkigm.com QQ群:49983196
	 * 
	 */	
	public class CLoadManagement extends Base
	{
		//
		//加载swf完成
		private var funLoadCompet:Function;
		//加载过程中的进度
		private var funProgress:Function;
		//当被加载swf的完成所以操作，会回调这个方法
		private var funSwfReadCallMe:Function;
		//当前加载对象
		private var currentLoader:CLoader=null;
		/**
		 * 初始化 
		 * @param funSwfLoadComplete  加载完成一个时的回调函数   格式:function(me:CLoadManagement,loader:CLoader);
		 * @param funSwfReadCallMe 当被加载swf的完成所以操作，会回调这个方法 function(me:CLoadManagement,obj:Object);
		 * 
		 */		
		public function CLoadManagement(funSwfLoadComplete:Function,funSwfReadCallMe:Function=null)
		{
			this.funLoadCompet=funSwfLoadComplete;
			this.funSwfReadCallMe=funSwfReadCallMe;
		}
		/**
		 * 找到通过CLoadManagement这个类加载的swf后，在这个swf的内部引用CLoadManagement这个类的实例。
		 * @param sp
		 * @return 
		 * 
		 */		
		public static function getRoot(sp:Sprite):CLoadManagement{
			return sp.parent.parent.parent as CLoadManagement;
		}
		public function load(url:String):void{
			//
			removCurrentItem()
			var newLoader:CLoader=new CLoader(url,0,0,0x000000,false);
			newLoader.setFunCompelet(loader_compt);
			newLoader.setFunProgress(loader_progress);
			currentLoader=newLoader;
		}
		/**
		 * 当前加载显示的对象不显示 
		 * @return 
		 * 
		 */		
		public function removCurrentItem():Boolean{
			if(currentLoader!=null){
				currentLoader.killMe();
				currentLoader=null;
				return true;
			}
			return false;
		}
		/**
		 * 显示出前加载的 
		 * 
		 */		
		public function showCurrentLoad():void{
			currentLoader.show(this);
		}
		/**
		 * 初加载的swf可以调用这个方法，告诉 CLoadManagement，你准备好了。
		 * @param obj
		 * 
		 */		
		public function hiIamReady(obj:Object=null):void{
			if(funSwfReadCallMe!=null) funSwfReadCallMe(this,obj);
		}
		/**
		 * 加载过程中时的回调函数 
		 * @param fun 格式 function(me:CLoadManagement,百分数:Number)
		 * 
		 */		
		public function setFunProgress(fun:Function):void{
			this.funProgress=fun;
		}
		private function loader_compt(loader:Loader):void{
			//trace("loader_compt");
			if(this.funLoadCompet!=null) this.funLoadCompet(this,currentLoader);
		}
		private function loader_progress(pre:Number):void{
			//trace("loader_progress");
			if(this.funProgress!=null) this.funProgress(this,pre);
		}
	}
}